/**
 * 
 */
package model;

import java.util.ArrayList;
import java.util.Iterator;

import persistency.DatabaseToegang;

import model.container.AangebodenCursussen;
import model.container.Lectoren;
import utils.LesDag;
import utils.TijdsMoment1Dag;

/**
 * @ Authors:
 * 
 * @Veronique De Laet
 * @Johan Willems
 * @Pierre Delaere
 * 
 * @version 2011
 */
public class LectorBeschikbaarheid implements IPlanningRule {

	/* (non-Javadoc)
	 * @see model.IPlanningRule#voldoet(java.lang.String)
	 */
	@Override
	public String voldoet(String nieuweCursus) {
		String[] deel = nieuweCursus.split("   "); 
		String[] lector = deel[1].split(":");//de lector in het tweede deel van het tweede blok
		String[] dag = deel[3].split(":");//de dag is in het tweede deel van het vierde blok
		String[] uur = deel[4].split(":");//het uur is in het tweede deel van het vijfde blok
		String startUur = uur[1].substring(0, 2);
		String startMinuut = uur[1].substring(3,5);
		String[] duur = deel[5].split(":");

		String lectorCode = "";
		boolean overlapt = false;
		String boodschap = "";
/*file persistency
		TijdsMoment1Dag lMoment = new TijdsMoment1Dag();
		LesDag lDag = LesDag.valueOf(dag[1]); 
		lMoment.setDag(lDag);
		System.out.println( "Nieuwe planning voor lector op " +LesDag.valueOf(dag[1]).toString() + " " + uur); 
		int startUur = Integer.parseInt(uur[1].substring(0, 2));
		int startMinuut = Integer.parseInt(uur[1].substring(3,5));
		lMoment.setStartUur(startUur);
		lMoment.setStartMinuten(startMinuut);
		lMoment.setDuurTijd(120);
		
		Iterator<Lector> l = Lectoren.lectorenLijst.values().iterator();
		while (l.hasNext()){
			Lector deLector = l.next();
			if(deLector.getLectorNaam().equals(lector)){
				lectorCode = deLector.getLectorCode();
			}
		}
		
		Iterator<AangebodenCursus> a = AangebodenCursussen.aangebodenCursusLijst.values().iterator();
		while (a.hasNext()){
			AangebodenCursus aCursus = a.next();
			if (lectorCode.equals(aCursus.getLectorCode())){
				System.out.println("vergeleken met cursus op " + aCursus.getTijdsMoment().toString());
				if(!overlapt && lMoment.overlapt(aCursus.getTijdsMoment())){
					overlapt = true;
					boodschap = "De lector is niet beschikbaar. ";
				}
			}
		}
		*/
		ArrayList<String> lijst = new ArrayList<String>();
		DatabaseToegang db = new DatabaseToegang();
		String dbCommand;
		int startMoment = Integer.parseInt(startUur)*60 + Integer.parseInt(startMinuut);
		int eindMoment = startMoment + Integer.parseInt(duur[1])*60;
		dbCommand = "select count(*) from aangebodencursus ac,cursus c,lector l,tijdsmoment t,lesdag ld ";
		dbCommand += "where   ac.cursusCode = c.cursusCode and ac.lectorcode = l.lectorcode and t.idTijdsmoment = ac.idTijdsMoment ";
		dbCommand += "and ld.idLesDag = t.dag and l.Lectornaam = '" + lector[1] + "' ";
		dbCommand += "and ((" + startMoment + " between uur*60+minuut and uur*60+minuut+duur*60) ";
		dbCommand += "or (" + eindMoment + " between uur*60+minuut and uur*60+minuut+duur*60))";
		lijst = db.getFromDB(dbCommand);
		for(String element:lijst)
			if(element != "0")
				boodschap = "De lector is niet beschikbaar. ";
		return boodschap;

	}

}
